<?php
/**
 * Report.class.php
 *
 * @author 周剑锋 <camfee@foxmai.com>
 *
 */

namespace controls\MobileApi\Center;

use MobileApi\ApiBase;
use Center\UserReport;

/**
 * 反馈相关接口
 *
 * @package Center
 * @author  fuxiang <892576@gmail.com>
 * @since   1.0.0 2017-10-26
 */
class Report extends ApiBase
{
    /**
     * 新增用户报错
     *
     * <pre>
     * POST:
     *      itemid:   必选，举报的对象ID
     *      itemtype: 必选，对象类型  1:贴子 2: 评论
     *      cont:     可选，举报内容（cont  和  type 二者必选其一）
     *      type:     可选，举报类型 (多个用 , 分隔) 1:广告信息 2:色情信息 3:反动言论 4:人身攻击 5:不适感内容 20:其他
     * </pre>
     *
     * @return void|string 返回JSON数据
     *
     * <pre>
     * {
     *    "Status": 200,
     *    "Result": {}
     * }
     *
     * 异常状态
     * 201: 举报类型错误
     * 202: 对象类型错误
     * 203: 对象ID错误
     * 204: 举报内容不能为空
     * 205: 举报失败,请稍后再试
     * </pre>
     */
    public function addReport()
    {
        $uid = $this->isLogin(false);
        $item_type = (int)$_POST['itemtype'];
        $item_id = (int)$_POST['itemid'];

        $type = trim($_POST['type']);
        $cont = trim($_POST['cont']);
        $agent = trim($_SERVER['HTTP_USER_AGENT']);

        if (!in_array($item_type, [1,2])) {
            $this->output(202, '对象类型错误');
        }
        if ($item_id < 1) {
            $this->output(203, '对象ID错误');
        }
        if (empty($cont) && empty($type)) {
            $this->output(204, '举报内容不能为空');
        }

        $content = '';
        if (!empty($type)) {
            $type = explode(',', $type);
            $types = loadconf('user/report_type');
            $type_arr = array_combine(array_column($types, 'Id'),array_column($types, 'Name'));
            foreach ($type as $v) {
                if (!empty($v)) {
                    $v = (int)$v;
                    if (!isset($type_arr[$v])) {
                        $this->output(201, '举报类型错误！');
                    }
                    $content .= $type_arr[$v] . '  ';
                }
            }
        }
        if (!empty($cont)) {
            $cont = mb_substr($cont, 0, 2000);
            $content .= $cont;
        }
        if (empty($uid)) {
            $uid = 0;
        }

        $content = $content . ' || ' . $GLOBALS['g_ver'] . ',' . $agent;
        $rel = UserReport::addUserReport($uid, 10, $item_id, $item_type, $content);
        if ($rel) {
            $this->output();
        }

        $this->output(205, '举报失败,请稍后再试');
    }
}